home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / util / misc / Ital25a.lha / Ital25a / Arexx / Rocco_Colluccelli / Guide2Ital.rexx < prev    next >
OS/2 REXX Batch file  |  1996-02-15  |  2KB  |  116 lines

  1. /*
  2.  * Guide2Ital
  3.  *
  4.  * USAGE: outfile = 'ital/Guide2Ital'(guide,text,codes,tags)
  5.  *
  6.  * Guide2Ital convert an AmigaGuide document to let Ital translate the
  7.  * text and then replace the AmigaGuide format...
  8.  *
  9.  * $(C): (1995, Rocco Coluccelli, Bologna)
  10.  * $VER: Guide2Ital 1.00 (01.Jun.1995)
  11.  */
  12.  
  13. SIGNAL ON halt
  14. SIGNAL ON break_c
  15.  
  16. /*
  17.  *    METHODS:
  18.  *        'TOGUIDE' ricostruisce il formato AmigaGuide originario
  19.  */
  20. PARSE ARG guide,text,codes,tags
  21. INTERPRET tags
  22.  
  23. mode = (POS('GUIDE',opt.METHODS) > 0)
  24.  
  25. ins_ID = '0920092009'x
  26. nl = '0a'x
  27.  
  28. /*
  29.  *    Open the AmigaGuide document
  30.  *    Open the text file
  31.  *    Open the codes file
  32.  */
  33. INTERPRET 'CALL Convert.'mode'()'
  34. CALL CleanUp(result)
  35.  
  36.  
  37. halt:
  38. break_c:
  39.     CALL CleanUp()
  40.  
  41.  
  42. Convert.0:
  43.  
  44.     IF ~OPEN('in',guide,'r') THEN EXIT ''
  45.     IF ~OPEN('out',text,'w') THEN EXIT ''
  46.     IF ~OPEN('ht',codes,'w') THEN EXIT ''
  47.  
  48.     lnk.1 = 'LINK'; lnk.2 = 'RX'; lnk.3 = 'SYSTEM'; lnk.4 = 'QUIT'
  49.  
  50.     input = READCH('in',65000)
  51.     DO UNTIL input = ''
  52.  
  53.         PARSE VAR input txt '@' c +1 input
  54.  
  55.         IF c ~= '' THEN DO
  56.             CALL WRITECH('out',txt || ins_ID)
  57.  
  58.             IF c = '{' THEN DO
  59.                 PARSE VAR input txt '}' input
  60.  
  61.                 str = UPPER(txt)
  62.                 DO n = 1 UNTIL p < 0 | n < 5
  63.                     p = POS(lnk.n,str) - 2
  64.                 END
  65.  
  66.                 IF p >= 0 THEN DO
  67.                     PARSE VAR txt str +p txt
  68.                     CALL WRITELN('ht','@{"')
  69.                     CALL WRITECH('out',COMPRESS(str,'"') || ins_ID)
  70.                     CALL WRITELN('ht','"'txt'}')
  71.                     END
  72.  
  73.                 ELSE CALL WRITELN('ht','@{'txt'}')
  74.             END
  75.  
  76.             ELSE DO
  77.                 PARSE VAR input txt (nl) input
  78.                 CALL WRITELN('ht','@' || c || txt)
  79.                 input = nl || input
  80.             END
  81.         END
  82.  
  83.         ELSE DO
  84.             CALL WRITECH('out',txt)
  85.             ITERATE
  86.         END
  87.     END
  88.  
  89. RETURN text
  90.  
  91.  
  92. Convert.1:
  93.  
  94.     IF ~OPEN('out',guide,'w') THEN CALL CleanUp()
  95.     IF ~OPEN('in',text,'r')   THEN CALL CleanUp()
  96.     IF ~OPEN('ht',codes,'r')  THEN CALL CleanUp()
  97.  
  98.     input = READCH('in',65000)
  99.     DO UNTIL input = ''
  100.  
  101.         PARSE VAR input txt (ins_ID) input
  102.         CALL WRITECH('out',txt || READLN('ht'))
  103.     END
  104.  
  105. RETURN guide
  106.  
  107.  
  108. CleanUp:
  109.     CALL CLOSE('in')
  110.     CALL CLOSE('out')
  111.     CALL CLOSE('ht')
  112.  
  113.     IF mode = 1 THEN ADDRESS COMMAND 'Delete "'text'" "'codes'" QUIET'
  114.  
  115.     EXIT ARG(1)
  116.